#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "shmem.h"  // 引入共享内存工具类头文件

// 读取共享内存数据并打印
int main() {
    struct shmem_param shmem_info;  // 共享内存信息结构体
    char buffer[SHMEM_SIZE];        // 用于存储读取到的数据

    // 初始化共享内存（使用与服务器相同的Key生成参数）
    if (shmem_init(&shmem_info, SHMEM_SIZE) != 0) {
        fprintf(stderr, "Failed to initialize shared memory\n");
        return EXIT_FAILURE;
    }

    printf("Successfully attached to shared memory (ID: %d, Size: %zu bytes)\n",
           shmem_info.id, shmem_info.size);
    printf("Waiting for data... (Press Ctrl+C to exit)\n");

    // 循环读取共享内存数据并打印（实时监控）
    while (1) {
        // 从共享内存复制数据到缓冲区
        memcpy(buffer, shmem_info.addr, SHMEM_SIZE);
        // 确保字符串以'\0'结尾（避免打印乱码）
        buffer[SHMEM_SIZE - 1] = '\0';

        // 打印共享内存中的数据（仅当数据非空时）
        if (strlen(buffer) > 0) {
            printf("\nShared memory data:\n");
            printf("-------------------\n");
            printf("%s\n", buffer);
            printf("-------------------\n");
            
            // 清空缓冲区（可选：避免重复打印相同数据，根据需求调整）
            // memset(shmem_info.addr, 0, SHMEM_SIZE);
        }

        // 每隔1秒读取一次（可根据需求调整频率）
        sleep(1);
    }

    // 清理共享内存（实际运行时通过Ctrl+C退出，此部分可能不会执行）
    shmem_del(&shmem_info);
    return EXIT_SUCCESS;
}